package modelo;

import java.awt.Color;

import javax.media.opengl.GL;

import controle.Transformacao;

/**
 * Classe que representa um objeto gráfico no mundo. Possui informações sobre
 * cor do objeto, a BBox que o envolve, sua primitica gráfica, e sua respectiva
 * transformação.
 * 
 * @author jean
 * @author diego
 */
public abstract class ObjetoGrafico {

	private Color cor;
	private final BBox bBox;
	private int primitivaGrafica;
	private Transformacao transformacao;

	/**
	 * Cria um objeto gráfico
	 * 
	 * @param cor
	 *            - A cor do objeto gráfico
	 */
	public ObjetoGrafico(Color cor) {
		transformacao = new Transformacao();
		bBox = new BBox();
		this.cor = cor;
	}

	/**
	 * Método responsável por desenhar o objeto gráfico.
	 * 
	 * @param gl
	 */
	public abstract void desenhar(GL gl);

	/**
	 * @return the primitivaGrafica
	 */
	public int getPrimitivaGrafica() {
		return primitivaGrafica;
	}

	/**
	 * @param primitivaGrafica
	 *            the primitivaGrafica to set
	 */
	public void setPrimitivaGrafica(int primitivaGrafica) {
		this.primitivaGrafica = primitivaGrafica;
	}

	/**
	 * @return the transformacao
	 */
	public Transformacao getTransformacao() {
		return transformacao;
	}

	/**
	 * @param transformacao
	 *            the transformacao to set
	 */
	public void setTransformacao(Transformacao transformacao) {
		this.transformacao = transformacao;
	}

	/**
	 * @return cor obtém a do objeto
	 */
	public Color getCor() {
		return cor;
	}

	/**
	 * @param cor
	 *            nova cor do objeto
	 */
	public void setCor(Color cor) {
		this.cor = cor;
	}

	/**
	 * @return bBox obtém a bBox que envolve o objeto
	 */
	public BBox getbBox() {
		return bBox;
	}

}
